﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;



namespace Ymodem_HostMachine.Ymodem_Protocols
{

/*
    Ymodem 传输模式 128字节和1024字节模式
 */
    public enum Ymodem_TransportType
    {
        Ymodem_128,     
        Ymodem_1K
    }
    
    public static class Ymodem_ControlCharacters
    {
        public const byte SOH = 0x01;    // 128字节数据包开始
        public const byte STX = 0x02;    // 1024字节数据包开始
        public const byte EOT = 0x04;    // 传输结束
        public const byte ACK = 0x06;    // 确认响应
        public const byte NAK = 0x15;    // 否定响应
        public const byte CAN = 0x18;    // 取消传输
        public const byte C = 0x43;      // 'C'，用于启动传输的请求
    }

    public class Ymodem_Packet
    {
        public byte StartByte { get; set; }      // SOH 或 STX
        public byte PacketNumber { get; set; }   // 数据包编号
        public byte PacketNumberComplement { get; set; } // 数据包编号的补码 (255 - PacketNumber)
        public byte[] Data { get; set; }         // 数据部分
        public ushort CRC16 { get; set; }        // CRC16 校验值
    }
    internal class Ymodem_Protocols
    {
/*Ymodem 发送*/
        public void Ymodem_transmit(string filePath)
        {
            int dataSize = 128;
            int packetNumber = 0;
            byte packetHead = 0;
            bool transmission_ret = false;

            //开始传输 等待字符 C

        }
        /*Ymodem接收*/
        public void Ymodem_upLoadFile()
        {

        }


/* Ymodem 发送数据接口 */

/* Ymodem 接收数据接口 */


    }
}
